/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.sadhar.sipp.perekamankomponenanggarangajibanpem;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.sadhar.errhandler.ClassAntiNull;
import org.sadhar.sia.common.ClassConnection;

/**
 *
 * @author hendro
 */
public class PerekamanKomponenAnggaranPendapatanGajiBANPEMImpl implements PerekamanKomponenAnggaranPendapatanGajiBANPEMDAO {

    public PerekamanKomponenAnggaranPendapatanGajiBANPEMImpl() {
        ClassConnection.getTransactionProxyFactoryBean().setTarget(this);
    }

    public void insert(PerekamanKomponenAnggaranGajiBanpem obj) throws Exception {
        String sql = "INSERT INTO ppmk.komponenAnggaranPendapatanBanPem(tahunAnggaran,isKomponenGaji,kodeKomponenGaji,komponenDiluarGaji,alias,rumus) " +
                "VALUES(?,?,?,?,?,?)";
        ClassConnection.getJdbc().update(sql, new Object[]{
                    obj.getTahunAnggaran(),
                    obj.getIsKomponenGaji(),
                    obj.getKodeKomponenGaji(),
                    obj.getKomponenDiluarGaji(),
                    obj.getAlias(),
                    obj.getRumus()
                });
    }

    public void update(PerekamanKomponenAnggaranGajiBanpem obj) throws Exception {
        String sql = "UPDATE ppmk.komponenAnggaranPendapatanBanPem SET tahunAnggaran=?," +
                "isKomponenGaji=?," +
                "kodeKomponenGaji=?," +
                "komponenDiluarGaji=?," +
                "alias=?," +
                "rumus=? WHERE idKomponen=?";
        ClassConnection.getJdbc().update(sql, new Object[]{
                    obj.getTahunAnggaran(),
                    obj.getIsKomponenGaji(),
                    obj.getKodeKomponenGaji(),
                    obj.getKomponenDiluarGaji(),
                    obj.getAlias(),
                    obj.getRumus(),
                    obj.getIdKomponen()
                });
    }

    public void delete(PerekamanKomponenAnggaranGajiBanpem obj) throws Exception {
        String sql = "DELETE FROM ppmk.komponenAnggaranPendapatanBanPem WHERE idKomponen=?";
        ClassConnection.getJdbc().update(sql, new Object[]{
                    obj.getIdKomponen()
                });
    }

    public List<PerekamanKomponenAnggaranGajiBanpem> list() throws Exception {
        List<PerekamanKomponenAnggaranGajiBanpem> list = new ArrayList<PerekamanKomponenAnggaranGajiBanpem>();
        List<Map> rows = ClassConnection.getJdbc().queryForList("SELECT * FROM ppmk.komponenAnggaranPendapatanBanPem ORDER BY idKomponen");
        for (Map m : rows) {
            PerekamanKomponenAnggaranGajiBanpem obj = new PerekamanKomponenAnggaranGajiBanpem();
            obj.setIdKomponen(ClassAntiNull.AntiNullInt(m.get("idKomponen")));
            obj.setTahunAnggaran(ClassAntiNull.AntiNullString(m.get("tahunAnggaran")));
            obj.setIsKomponenGaji(ClassAntiNull.AntiNullString(m.get("isKomponenGaji")));
            obj.setKodeKomponenGaji(ClassAntiNull.AntiNullString(m.get("kodeKomponenGaji")));
            obj.setKomponenDiluarGaji(ClassAntiNull.AntiNullString(m.get("komponenDiluarGaji")));
            obj.setAlias(ClassAntiNull.AntiNullString(m.get("alias")));
            obj.setRumus(ClassAntiNull.AntiNullString(m.get("rumus")));
            list.add(obj);
        }
        return list;
    }

    public List<String> loadTahun() throws Exception {
        String sql = "SELECT Distinct(tahunAnggaran) FROM ppmk.komponenAnggaranPendapatanBanPem ORDER BY tahunAnggaran";
        List<String> list = new ArrayList<String>();
        List<Map> rows = ClassConnection.getJdbc().queryForList(sql);
        for (Map m : rows) {
            list.add(ClassAntiNull.AntiNullString(m.get("tahunAnggaran")));
        }
        return list;
    }

    public List<PerekamanKomponenAnggaranGajiBanpem> select(String kodeKomponenGaji, String komponenDiluarGaji, String alias) throws Exception {
        String sql = "SELECT * FROM ppmk.komponenAnggaranPendapatanBanPem WHERE (kodeKomponenGaji=? OR komponenDiluarGaji=?) OR alias=? ORDER BY idKomponen";
        List<PerekamanKomponenAnggaranGajiBanpem> list = new ArrayList<PerekamanKomponenAnggaranGajiBanpem>();
        List<Map> rows = ClassConnection.getJdbc().queryForList(sql, new Object[]{
                    kodeKomponenGaji,
                    komponenDiluarGaji,
                    alias
                });
        for (Map m : rows) {
            PerekamanKomponenAnggaranGajiBanpem obj = new PerekamanKomponenAnggaranGajiBanpem();
            obj.setIdKomponen(ClassAntiNull.AntiNullInt(m.get("idKomponen")));
            obj.setTahunAnggaran(ClassAntiNull.AntiNullString(m.get("tahunAnggaran")));
            obj.setIsKomponenGaji(ClassAntiNull.AntiNullString(m.get("isKomponenGaji")));
            obj.setKodeKomponenGaji(ClassAntiNull.AntiNullString(m.get("kodeKomponenGaji")));
            obj.setKomponenDiluarGaji(ClassAntiNull.AntiNullString(m.get("komponenDiluarGaji")));
            obj.setAlias(ClassAntiNull.AntiNullString(m.get("alias")));
            obj.setRumus(ClassAntiNull.AntiNullString(m.get("rumus")));
            list.add(obj);
        }
        return list;
    }

    public List<PerekamanKomponenAnggaranGajiBanpem> selectUpdate(int idKomponen, String kodeKomponenGaji, String komponenDiluarGaji, String alias) throws Exception {
        String sql = "SELECT * FROM ppmk.komponenAnggaranPendapatanBanPem WHERE (kodeKomponenGaji=? OR komponenDiluarGaji=? OR alias=?) AND idKomponen<>? ORDER BY idKomponen";
        List<PerekamanKomponenAnggaranGajiBanpem> list = new ArrayList<PerekamanKomponenAnggaranGajiBanpem>();
        List<Map> rows = ClassConnection.getJdbc().queryForList(sql, new Object[]{
                    kodeKomponenGaji,
                    komponenDiluarGaji,
                    alias,
                    idKomponen
                });
        for (Map m : rows) {
            PerekamanKomponenAnggaranGajiBanpem obj = new PerekamanKomponenAnggaranGajiBanpem();
            obj.setIdKomponen(ClassAntiNull.AntiNullInt(m.get("idKomponen")));
            obj.setTahunAnggaran(ClassAntiNull.AntiNullString(m.get("tahunAnggaran")));
            obj.setIsKomponenGaji(ClassAntiNull.AntiNullString(m.get("isKomponenGaji")));
            obj.setKodeKomponenGaji(ClassAntiNull.AntiNullString(m.get("kodeKomponenGaji")));
            obj.setKomponenDiluarGaji(ClassAntiNull.AntiNullString(m.get("komponenDiluarGaji")));
            obj.setAlias(ClassAntiNull.AntiNullString(m.get("alias")));
            obj.setRumus(ClassAntiNull.AntiNullString(m.get("rumus")));
            list.add(obj);
        }
        return list;
    }
}
